package cn.lyjuan.android.demofive.frame.tpl;

/**
 * 用于 List 视图的模型<br />
 * 提供基本的获取数据，点击，长按事件接口<br />
 * {@code E}为视图需要的数据类型，{@code E}为数据源数据类型
 * Created by chad on 12/11/2017.
 */
public interface IListViewModel<T, E> extends IViewModel, IFetchDataListener<E>
{
    /**
     * 元素个数
     *
     * @return
     */
    int getCount();

    /**
     * 获取元素
     *
     * @param position
     * @return
     */
    T getItem(int position);

    /**
     * 元素点击事件
     *  @param position
     *
     */
    void onItemClick(int position);

    /**
     * 长按
     *  @param position
     *
     */
    void onItemLongClick(int position);

    /**
     * 设置适配器
     * @param adapter   RecyclerView.Adapter未与ListView Adapter兼容，所以这里用Object类型
     */
    void setAdapter(Object adapter);

    /**
     * 设置数据源
     */
    void loadDataSource();

    /**
     * 加载数据
     *
     * @param clear 是否清除之前的数据
     */
    void loadData(boolean clear);
}
